package cn.com.doone.common.uc.web.dao;

import java.util.List;
import java.util.Map;

public interface AppDao {

	/**
	 * 查询clientId是否重复
	 * @param clientId
	 * @return
	 */
	public long countAppClientId(String clientId);
	
	/**
	 * 查询tenantCode是否重复
	 * @param tenantCode
	 * @return
	 */
	public long countTenantCode(String tenantCode);
	
	/**
	 * 查询应用分页列表
	 * @param paramsMap
	 * @return
	 */
	public List<Map<String,Object>> queryAppList(Map<String,Object> paramsMap);
	
	/**
	 * 统计应用分页列表
	 * @param paramsMap
	 * @return
	 */
	public long countApp(Map<String,Object> paramsMap);
	
	/**
	 * 添加应用
	 * @param paramsMap
	 * @return
	 */
	public int insertApp(Map<String,Object> paramsMap);
	
	/**
	 * 根据ID查询应用信息
	 * @param paramsMap
	 * @return
	 */
	public Map<String,Object> queryAppInfoById(Map<String,Object> paramsMap);
	
	/**
	 * 根据clientId查询应用信息
	 * @param clientId
	 * @return
	 */
	public Map<String,Object> queryAppInfo(String clientId);
	
	/**
	 * 删除应用与组授权
	 * @param paramsMap
	 * @return
	 */
	public int deleteAppGroupAuthorize(Map<String,Object> paramsMap);
	
	/**
	 * 添加应用与组授权
	 * @param paramsMap
	 * @return
	 */
	public int insertAppGroupAuthorize(Map<String,Object> paramsMap);
	
	/**
	 * 修改应用信息
	 * @param paramsMap
	 * @return
	 */
	public int updateApp(Map<String,Object> paramsMap);
	
	/**
	 * 改变应用状态
	 * @param paramsMap
	 * @return
	 */
	public int editAppStatus(Map<String,Object> paramsMap);
	
	/**
	 * 删除应用
	 * @param paramsMap
	 * @return
	 */
	public int deleteApp(Map<String,Object> paramsMap);
	
	/**
	 * 统计组是否还有绑定其他应用
	 * @param groupList
	 * @return
	 */
	public long countAppByAuthzGroupId(List<Map<String,Object>> groupList);
	
	/**
	 * 删除应用绑定的组
	 * @param paramsMap
	 * @return
	 */
	public int deleteAuthzGroupByClient(Map<String,Object> paramsMap);
	
	/**
	 * 根据clientId和appSecret验证应用是否存在
	 * @param paramsMap
	 * @return
	 */
	public long countClientByClientIdAndAppSecret(Map<String,Object> paramsMap);
	
	/**
	 * 更新应用样式路径
	 * @param paramsMap
	 * @return
	 */
	public int updateStyleUrl(Map<String,Object> paramsMap);
	
	/**
	 * 批量添加应用组授权关系
	 * @param list
	 * @return
	 */
	public int batchInsertAppGroupAuthz(List<Map<String,Object>> list);
}
